<?php

/**
 * Description of RepoProducto
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class RepoHorario extends Repositorio
{

  function __construct()
  {
    $this->tabla = "horario_terapeuta";
    $this->id = "idHorario";
  }

  function agregar(Horario $horario)
  {
    try
    {

      $link = $this->OpenDB();
      $this->beginTransaction();
      $result = $this->insertarHorario($horario);
      if ($result)
        $this->commitTransaction();
      else
        $this->rollbackTransaction();
      $this->CloseDB($link);
      return $result;
    } catch (Exception $ex)
    {
      $this->rollbackTransaction();
      return $ex;
    }
  }

  function modificar(Horario $horario)
  {
      $link = $this->OpenDB();
    try
    {
      $this->beginTransaction();
      if ($this->eliminarHorario($horario))
      {
        $result = $this->insertarHorario($horario);
        if ($result)
          $this->commitTransaction();
        else
          $this->rollbackTransaction();
      } else
      {
        $this->rollbackTransaction();
      }
      $this->CloseDB($link);
      return $result;
    } catch (Exception $ex)
    {
      $this->rollbackTransaction();
      $this->CloseDB($link);
      return $ex;
    }
  }

  function insertarHorario(Horario $horario)
  {
//    $timestamp = strtotime($horario->getFecha());
    $fecha = $this->SqlDate($horario->getFecha());
    $horarioDesde2 = $horario->getDesde2() != "" ? $horario->getDesde2() : "NULL";
    $horarioHasta2 = $horario->getHasta2() != "" ? $horario->getHasta2() : "NULL";
    $query = "INSERT INTO " . $this->tabla . "(terapeuta, fecha, desde1, hasta1, desde2, hasta2, usuario) values (";
    $query .= $horario->getIdTerapeuta() . ", ";
//    $query .= "'" .  date("Ymd", $timestamp). "', ";
    $query .= "'" .  $fecha. "', ";
    $query .= $horario->getDesde1() . ",";
    $query .= $horario->getHasta1() . ",";
    $query .= $horarioDesde2 . ",";
    $query .= $horarioHasta2 . ",";
    $query .= "'" . $horario->getUsuario() . "')";
    $result = $this->PostSQL($query);
    return $result;
  }

  function eliminarHorario(Horario $horario)
  {
    $fecha = $this->SqlDate($horario->getFecha());
//    $timestamp = strtotime($horario->getFecha());
    $query = "DELETE FROM " . $this->tabla . " where ";
    $query .= " terapeuta =" . $horario->getIdTerapeuta();
//    $query .= " AND fecha = '" . date("Ymd", $timestamp) . "'";
    $query .= " AND fecha = '" . $fecha . "'";
    $result = $this->PostSQL($query);
    return $result;
  }

  function buscar($terapeutaId, $fecha)
  {
    $link = $this->OpenDB();
//    $timestamp = strtotime($fecha);
    $where = " WHERE terapeuta = " . $terapeutaId;
    $where .= " AND fecha = '" . $this->SqlDate($fecha) . "'";
    $horariosObj = $this->GetSQL("SELECT desde1, hasta1, desde2, hasta2 from horario_terapeuta " . $where);
    $this->CloseDB($link);
    $horario = new Horario();
    if ($horariosObj != null)
    {
      $horario->setDesde1($horariosObj[0]->desde1);
      $horario->setDesde2($horariosObj[0]->desde2);
      $horario->setHasta1($horariosObj[0]->hasta1);
      $horario->setHasta2($horariosObj[0]->hasta2);
      $horario->setFecha($fecha);
      $repoTerapeuta = new RepoTerapeuta();
      $horario->setTerapeuta($repoTerapeuta->buscar($terapeutaId));
    } else 
    {
      $horario->setDesde1(0);
      $horario->setDesde2(0);
      $horario->setHasta1(0);
      $horario->setHasta2(0);
      $horario->setFecha($fecha);
      $repoTerapeuta = new RepoTerapeuta();
      $horario->setTerapeuta($repoTerapeuta->buscar($terapeutaId));
    }
    return $horario;
  }

}

?>
